package wh.合并两个有序数组;

import java.util.Arrays;

/**
 * @author: wh(1835734390 @ qq.com)
 * @date: 2022/3/30 19:38
 * @description:merge两个非递减有序的数组
 * @version:
 */
public class Solution {

    public static void main(String[] args) {
        int[] nums1 = new int[6];
        nums1[0] = 1;
        nums1[1] = 3;
        nums1[2] = 5;
        int[] nums2 = {2,4,6};
        int[] merge = merge(nums1, 3, nums2, 3);
        System.out.println(Arrays.toString(merge));

    }

    //解法一
    public  static int[] merge(int[] nums1, int m, int[] nums2, int n) {
        int i = 0;
        int j = 0;
        while (i < nums1.length && j < n){
            if(nums1[i] <= nums2[j]){
                i++;
            }else {
                for (int k = m + j; k > i ; k--){
                    nums1[k] = nums1[k-1];
                }
                nums1[i] = nums2[j];
                i++;
                j++;
            }
        }
        if(j < n){
            for (int k = m + j; k < m + n; k++) {
                nums1[k] = nums2[j];
                j++;
            }
        }
        return nums1;
    }

    //🐂🐂解法
    public static void merge2(int[] nums1, int m, int[] nums2, int n) {
        for (int i = 0; i != n; ++i) {
            nums1[m + i] = nums2[i];
        }
        Arrays.sort(nums1);
    }
}
